(function($){$.pager=function($parameters){
    /**
    * 必要参数范畴检测，如果未传入则终止程式。
    */
    if(!('data' in $parameters)||!('link' in $parameters)||!('button' in $parameters)){ //分页数据。
        return;
    }
    var rowCount=$parameters.data.rowCount;                        //页和。
    var pageCount=$parameters.data.pageCount;                      //页数。
    var pageSize=$parameters.data.pageSize;                        //页位。
    var pagination=$parameters.data.pagination;                    //页码。
    if(isNaN(rowCount)||isNaN(pageCount)||isNaN(pageSize)){
        return;
    }
    if(isNaN(pagination)){
        pagination=1;
    }
    else{
        pagination=Number(pagination);
        if(pagination<1){
            pagination=1;
        }
    }
    //错误存储容器。
    var errorPaniel;
    if(('other' in $parameters)&&('errorPaniel' in $parameters.other)){
        errorPaniel=$parameters.other.errorPaniel;
    }

    /**
    * 链接生成协议处理。
    */
    var PROTOCOL_COMMON='common';
    var PROTOCOL_TRYPHP_COMMON='tryPHP_Common'.toLowerCase();
    var PROTOCOL_TRYPHP_STATIC='tryPHP_Static'.toLowerCase();
    //--
    var protocolType='common';
    var protocol=$parameters.link.protocol.toLowerCase(); //协议
    //--
    if(protocol){
        var isProtocol=(protocol===PROTOCOL_COMMON);
            isProtocol=(isProtocol||protocol===PROTOCOL_TRYPHP_COMMON);
            isProtocol=(isProtocol||protocol===PROTOCOL_TRYPHP_STATIC);
        if(isProtocol){
            if(protocol===PROTOCOL_TRYPHP_COMMON||protocol===PROTOCOL_TRYPHP_STATIC){
                protocolType='tryPHP';
            }
        }
        else{
            protocol=PROTOCOL_COMMON;
        }
    }
    else{
        protocol=PROTOCOL_COMMON;
    }

    /**
    * 分析链接必要质素，应用、控制器、模式、方法。
    */
    var link='';
    if('protocolData' in $parameters.link){
        link=$parameters.link.protocolData;
    }
    else{
        if(protocol==='common'){
            var filename=location.href.split('?')[0];
            filename=filename.substr(filename.lastIndexOf('/')+1);
            filename=filename.replace('#','');
            link=filename;
        }
        else{
            errorPaniel.val('无基要链接。');
            return;
        }
    }

    /**
    * 解析链接参数并生成数组。
    */
    var parameters=decodeURIComponent($parameters.link.parameters);        //参数
    if(parameters!=''){
        if(typeof(parameters)==='string'){
            var tempObject={};
            var tempParameters=parameters.split('|');
            for(i=0;i<tempParameters.length;i++){
                if(typeof(tempParameters[i])==='string'){
                    if(tempParameters[i].indexOf(':')!==-1){
                        var tempParameter=tempParameters[i].split(':');
                        var name=tempParameter[0],value=tempParameter[1];
                        tempObject[name]=value;
                    }
                    else{
                        return;
                    }
                }
            }
            parameters=tempObject;
        }
        else{
            if(typeof(parameters)!=='object'){
                errorPaniel.val('链接参数无法解析。');
                return;
            }
        }
    }

    /**
    * 解析页码参数名称。
    */
    var parameterName=$parameters.link.name; //分页参数称
    if(!parameterName){
        parameterName='page';
    }

    /**
    * 根据不同协议生成相应链接生成链接。
    */
    var firstLink,lastLink,previousLink,nextLink,cycleLink;
    var makeParametersPartCommon=function($link){
        var temp='';
        for(paramName in parameters){
            temp=temp+'&'+paramName+'='+(parameters[paramName]);
            //$link+='&'+paramName+'='+encodeURIComponent(parameters[paramName]);
        }
        $link+=temp;
        return $link;
    };
    //--
    if(protocol===PROTOCOL_COMMON){
        firstLink=link+'?'+parameterName+'=1';
        lastLink=link+'?'+parameterName+'='+pageCount;
        previousLink=link+'?'+parameterName+'='+(pagination-1);
        nextLink=link+'?'+parameterName+'='+(pagination+1);
    }
    else if(protocol===PROTOCOL_TRYPHP_COMMON){
        firstLink=link+'&page=1';
        lastLink=link+'&page='+pageCount;
        previousLink=link+'&page='+(pagination-1);
        nextLink=link+'&page='+(pagination+1);
    }
    else if(protocol===PROTOCOL_TRYPHP_STATIC){
        link=('/'+link);
        link=link.replace('//','/');
        link=link.replace('/\\','/');
        link=link.replace('\\/','/');
        //生成基本链接。
        firstLink=(link+'/page_1');
        lastLink=(link+'/page_'+pageCount);
        previousLink=(link+'/page_'+(pagination-1));
        nextLink=(link+'/page_'+(pagination+1));
        //附加链接参数。
        for(parameterName in parameters){
            firstLink+=('/'+parameterName+'_'+parameters[parameterName]);
            lastLink+=('/'+parameterName+'_'+parameters[parameterName]);
            previousLink+=('/'+parameterName+'_'+parameters[parameterName]);
            nextLink+=('/'+parameterName+'_'+parameters[parameterName]);
        }
    }
    //common和tryPHPCommon协议情况附加参数。
    if(protocol===PROTOCOL_COMMON||protocol===PROTOCOL_TRYPHP_COMMON){
        firstLink=makeParametersPartCommon(firstLink);
        lastLink=makeParametersPartCommon(lastLink);
        previousLink=makeParametersPartCommon(previousLink);
        nextLink=makeParametersPartCommon(nextLink);
    }

    /**
    * 将生成的链接绑定到按钮上。
    */
    var first=$parameters.button.first,firstLinkType='link';
    var last=$parameters.button.last,lastLinkType='link';
    var previous=$parameters.button.previous,previousLinkType='link';
    var next=$parameters.button.next,nextLinkType='link';
    var cycle=$parameters.button.cycle,cycleLinkType='link';
    //第一页按钮。
    if(first){
        if(typeof(first)==='string'){
            first=$('#'+first);
        }
        else if(typeof(first)==='object'){
            if(typeof(first[1])){
                firstLinkType=first[1];
            }
            first=first[0];
        }
        //--
        if(firstLinkType==='link'){
            first.attr('href',firstLink);
        }
        else{
            first.attr('href','javascript:return false;');
            first.click(function(){
                window.location=firstLink;
            });
        }
    }
    //最后一页按钮。
    if(last){
        if(typeof(last)==='string'){
            last=$('#'+last);
        }
        else if(typeof(last)==='object'){
            if(typeof(last[1])){
                lastLinkType=last[1];
            }
            last=last[0];
        }
        //--
        if(lastLinkType==='link'){
            last.attr('href',lastLink);
        }
        else{
            last.attr('href','javascript:return false;');
            last.click(function(){
                window.location=lastLink;
            });
        }
    }
    //上一页按钮。
    if(previous){
        if(typeof(previous)==='string'){
            previous=$('#'+previous);
        }
        else if(typeof(previous)==='object'){
            if(typeof(previous[1])){
                previousLinkType=previous[1];
            }
            previous=previous[0];
        }
        //--
        if(previousLinkType==='link'){
            previous.attr('href',previousLink);
        }
        else{
            previous.attr('href','javascript:return false;');
            previous.click(function(){
                window.location=previousLink;
            });
        }
    }
    //下一页按钮。
    if(next){
        if(typeof(next)==='string'){
            next=$('#'+next);
        }
        else if(typeof(next)==='object'){
            if(typeof(next[1])){
                nextLinkType=next[1];
            }
            next=next[0];
        }
        //--
        if(nextLinkType==='link'){
            next.attr('href',nextLink);
        }
        else{
            next.attr('href','javascript:return false;');
            next.click(function(){
                window.location=nextLink;
            });
        }
    }
    //显示相关分页信息。
    if($parameters.info){
        var infoRowCount=$parameters.info.rowCount;
        if(infoRowCount){
            if(typeof(infoRowCount)==='string'){
                $('#'+infoRowCount).text(rowCount);
            }
            else if(typeof(infoRowCount)==='object'){
                if(typeof(infoRowCount[1])!=='undefined'){
                      infoRowCount[0].text(infoRowCount[0].text().replace(infoRowCount[1],rowCount));
                }
            }
        }
        //--
        var infoPagination=$parameters.info.pagination;
        if(infoPagination){
            if(typeof(infoPagination)==='string'){
                $('#'+infoPagination).text(rowCount);
            }
            else if(typeof(infoPagination)==='object'){
                if(typeof(infoPagination[1])!=='undefined'){
                      infoPagination[0].text(infoPagination[0].text().replace(infoPagination[1],pagination+'/'+pageCount));
                }
            }
        }
    }
}})(jQuery);


    //--
//            if(cycle){
//                if(typeof(cycle)==='string'){
//                    cycle=$('#'+cycle);
//                }
//                else if(typeof(cycle)==='object'){
//                    if(typeof(cycle[1])){
//                        cycleLinkType=cycle[1];
//                    }
//                    cycle=cycle[0];
//                }
//            }
    //--
//            for(iPage=1;iPage<=$parameters.meta.pageCount;iPage++){
//                cycle.after('str');
//                if(cycleLinkType==='link'){
//                    $('#').live('click',function(){
//                        window.location=cycleLink;
//                    });
//                }
//                //--
//                if(iPage===$parameters.meta.pageCount){
//                    cycle.remove();
//                }
//            }